public class PlayerCrouchIdleState : PlayerGroundState
{
    public PlayerCrouchIdleState(Player player, PlayerSM stateMachine, PlayerData playerData, string animBoolName,
        Core core) : base(player, stateMachine, playerData, animBoolName, core)
    {
    }

    public override void Enter()
    {
        base.Enter();

        _player.SetCollisionHeight(_playerData._crouchCollisionHeight);
    }

    public override void Exit()
    {
        base.Exit();
    }

    public override void LogicUpdate()
    {
        base.LogicUpdate();
        if (_inputY >= 0 && !_isTouchingCeiling)
        {
            _player.SetCollisionHeight(_playerData._standCollisionHeiht);
            _stateMachine.ChangeState(_player.IdleState);
        }
        else if (_inputX != 0)
        {
            _stateMachine.ChangeState(_player.CrouchMoveState);
        }
    }
}